home *** CD-ROM | disk | FTP | other *** search
/ Your Web Site Creator / Your Web Site Creator.iso / WebSite / data1.cab / Program_Executable_Files / Classes / CACANVA2.CLA (.txt) < prev    next >
Encoding:
Java Class File  |  1999-01-13  |  6.2 KB  |  306 lines

  1. import java.applet.Applet;
  2. import java.awt.Canvas;
  3. import java.awt.Color;
  4. import java.awt.Component;
  5. import java.awt.Dimension;
  6. import java.awt.Event;
  7. import java.awt.FontMetrics;
  8. import java.awt.Graphics;
  9. import java.awt.Image;
  10. import java.awt.Polygon;
  11. import java.awt.Rectangle;
  12. import java.awt.image.ImageObserver;
  13. import java.util.Date;
  14. import java.util.StringTokenizer;
  15.  
  16. public class CalendarCanvas2 extends Canvas {
  17.    int rowHeight;
  18.    int colWidth;
  19.    int month;
  20.    int day;
  21.    int year;
  22.    int dayOfWeek;
  23.    String[] monthNames = new String[12];
  24.    int[] daysInMonth = new int[12];
  25.    Image bkImage;
  26.    Color bkColor;
  27.    Image osImage;
  28.    Graphics osg;
  29.    boolean showDateLines;
  30.    String headerString;
  31.    boolean prevButtonHighlited;
  32.    boolean nextButtonHighlited;
  33.    Color headerColor;
  34.    Color datesColor;
  35.  
  36.    public CalendarCanvas2(Applet var1, int var2) {
  37.       this.daysInMonth[0] = 31;
  38.       this.daysInMonth[1] = 28;
  39.       this.daysInMonth[2] = 31;
  40.       this.daysInMonth[3] = 30;
  41.       this.daysInMonth[4] = 31;
  42.       this.daysInMonth[5] = 30;
  43.       this.daysInMonth[6] = 31;
  44.       this.daysInMonth[7] = 31;
  45.       this.daysInMonth[8] = 30;
  46.       this.daysInMonth[9] = 31;
  47.       this.daysInMonth[10] = 30;
  48.       this.daysInMonth[11] = 31;
  49.       this.GetParameters(var1, var2);
  50.       Date var3 = new Date();
  51.       this.month = var3.getMonth();
  52.       this.day = var3.getDate();
  53.       this.year = var3.getYear() + 1900;
  54.       this.dayOfWeek = var3.getDay();
  55.       this.headerString = this.monthNames[this.month] + " " + this.year;
  56.       this.prevButtonHighlited = false;
  57.       this.nextButtonHighlited = false;
  58.    }
  59.  
  60.    void DoPrevMonth() {
  61.       --this.month;
  62.       this.day = 1;
  63.       if (this.month < 0) {
  64.          this.month = 11;
  65.          --this.year;
  66.       }
  67.  
  68.       this.headerString = this.monthNames[this.month] + " " + this.year;
  69.       ((Component)this).repaint();
  70.    }
  71.  
  72.    void DoNextMonth() {
  73.       ++this.month;
  74.       this.day = 1;
  75.       if (this.month > 11) {
  76.          this.month = 0;
  77.          ++this.year;
  78.       }
  79.  
  80.       this.headerString = this.monthNames[this.month] + " " + this.year;
  81.       ((Component)this).repaint();
  82.    }
  83.  
  84.    void GetParameters(Applet var1, int var2) {
  85.       String var3 = var1.getParameter("calendarBkColor" + var2);
  86.       this.bkColor = AppletParam2.GetColor(var3, (Color)null);
  87.       if (this.bkColor != null) {
  88.          ((Component)this).setBackground(this.bkColor);
  89.       }
  90.  
  91.       var3 = var1.getParameter("calendarBkImage" + var2);
  92.       this.bkImage = AppletParam2.GetImage(var1, var3);
  93.       var3 = var1.getParameter("calendarMonthNames" + var2);
  94.       String var4 = AppletParam2.GetString(var3, "January,February,March,April,May,June,July,August,September,October,November,December");
  95.       StringTokenizer var5 = new StringTokenizer(var4, ",");
  96.  
  97.       for(int var6 = 0; var5.hasMoreTokens(); ++var6) {
  98.          this.monthNames[var6] = var5.nextToken();
  99.       }
  100.  
  101.       var3 = var1.getParameter("calendarShowDateLines" + var2);
  102.       this.showDateLines = AppletParam2.GetBoolean(var3, true);
  103.       var3 = var1.getParameter("calendarHeaderColor" + var2);
  104.       this.headerColor = AppletParam2.GetColor(var3, Color.black);
  105.       var3 = var1.getParameter("calendarDatesColor" + var2);
  106.       this.datesColor = AppletParam2.GetColor(var3, Color.black);
  107.    }
  108.  
  109.    public void update(Graphics var1) {
  110.       this.paint(var1);
  111.    }
  112.  
  113.    public void paint(Graphics var1) {
  114.       if (this.osImage == null) {
  115.          this.osImage = ((Component)this).createImage(((Component)this).size().width, ((Component)this).size().height);
  116.          this.osg = this.osImage.getGraphics();
  117.       }
  118.  
  119.       this.osg.setColor(((Component)this).getBackground());
  120.       this.osg.fillRect(0, 0, ((Component)this).size().width, ((Component)this).size().height);
  121.       if (this.bkImage != null) {
  122.          int var2 = this.bkImage.getWidth((ImageObserver)null);
  123.          int var3 = this.bkImage.getHeight((ImageObserver)null);
  124.          int var4 = ((Component)this).size().width / var2;
  125.          int var5 = ((Component)this).size().height / var3;
  126.          ++var4;
  127.          ++var5;
  128.  
  129.          for(int var6 = 0; var6 < var5; ++var6) {
  130.             for(int var7 = 0; var7 < var4; ++var7) {
  131.                this.osg.drawImage(this.bkImage, var7 * var2, var6 * var3, this);
  132.             }
  133.          }
  134.       }
  135.  
  136.       if (this.prevButtonHighlited) {
  137.          this.osg.setColor(Color.white);
  138.          this.osg.drawLine(0, 0, this.colWidth - 1, 0);
  139.          this.osg.drawLine(0, 0, 0, this.rowHeight - 1);
  140.          this.osg.setColor(Color.black);
  141.          this.osg.drawLine(0, this.rowHeight - 1, this.colWidth - 1, this.rowHeight - 1);
  142.          this.osg.drawLine(this.colWidth - 1, this.rowHeight - 1, this.colWidth - 1, 0);
  143.       }
  144.  
  145.       this.osg.setColor(this.headerColor);
  146.       Polygon var22 = new Polygon();
  147.       var22.addPoint(this.colWidth / 2 - 2, 1);
  148.       var22.addPoint(1, this.rowHeight / 2);
  149.       var22.addPoint(this.colWidth / 2 - 2, this.rowHeight - 2);
  150.       var22.addPoint(this.colWidth / 2 - 2, 1);
  151.       Polygon var23 = new Polygon();
  152.       var23.addPoint(this.colWidth / 2 + 1, this.rowHeight / 2);
  153.       var23.addPoint(this.colWidth - 2, 1);
  154.       var23.addPoint(this.colWidth - 2, this.rowHeight - 2);
  155.       var23.addPoint(this.colWidth / 2 + 1, this.rowHeight / 2);
  156.       this.osg.fillPolygon(var22);
  157.       this.osg.fillPolygon(var23);
  158.       if (this.nextButtonHighlited) {
  159.          this.osg.setColor(Color.white);
  160.          this.osg.drawLine(((Component)this).size().width - this.colWidth - 1, 0, ((Component)this).size().width, 0);
  161.          this.osg.drawLine(((Component)this).size().width - this.colWidth - 1, 0, ((Component)this).size().width - this.colWidth - 1, this.rowHeight - 1);
  162.          this.osg.setColor(Color.black);
  163.          this.osg.drawLine(((Component)this).size().width - this.colWidth - 1, this.rowHeight - 1, ((Component)this).size().width - 1, this.rowHeight - 1);
  164.          this.osg.drawLine(((Component)this).size().width - 1, this.rowHeight - 1, ((Component)this).size().width - 1, 0);
  165.       }
  166.  
  167.       this.osg.setColor(this.headerColor);
  168.       Polygon var25 = new Polygon();
  169.       var25.addPoint(((Component)this).size().width - 1 - this.colWidth + 2, 1);
  170.       var25.addPoint(((Component)this).size().width - 1 - this.colWidth / 2 - 1, this.rowHeight / 2);
  171.       var25.addPoint(((Component)this).size().width - 1 - this.colWidth + 2, this.rowHeight - 2);
  172.       var25.addPoint(((Component)this).size().width - 1 - this.colWidth + 2, 1);
  173.       Polygon var27 = new Polygon();
  174.       var27.addPoint(((Component)this).size().width - 1 - this.colWidth / 2 + 2, 1);
  175.       var27.addPoint(((Component)this).size().width - 2, this.rowHeight / 2);
  176.       var27.addPoint(((Component)this).size().width - 1 - this.colWidth / 2 + 2, this.rowHeight - 2);
  177.       var27.addPoint(((Component)this).size().width - 1 - this.colWidth / 2 + 2, 1);
  178.       this.osg.fillPolygon(var25);
  179.       this.osg.fillPolygon(var27);
  180.       FontMetrics var28 = ((Component)this).getFontMetrics(((Component)this).getFont());
  181.       int var29 = var28.stringWidth(this.headerString);
  182.       int var8 = ((Component)this).size().width / 2 - var29 / 2;
  183.       int var9 = this.rowHeight / 2 + var28.getMaxAscent() / 2;
  184.       this.osg.drawString(this.headerString, var8, var9);
  185.       this.osg.setColor(this.datesColor);
  186.       if (this.showDateLines) {
  187.          for(int var10 = 0; var10 < 7; ++var10) {
  188.             for(int var11 = 0; var11 < 7; ++var11) {
  189.                this.osg.drawRect(var11 * this.colWidth, (var10 + 1) * this.rowHeight, this.colWidth, this.rowHeight);
  190.             }
  191.          }
  192.       }
  193.  
  194.       int var37 = var28.getMaxAscent();
  195.       int var30 = var28.charWidth('S');
  196.       this.osg.drawString("S", this.colWidth / 2 - var30 / 2, this.rowHeight + this.rowHeight / 2 + var37 / 2);
  197.       var30 = var28.charWidth('M');
  198.       this.osg.drawString("M", this.colWidth + this.colWidth / 2 - var30 / 2, this.rowHeight + this.rowHeight / 2 + var37 / 2);
  199.       var30 = var28.charWidth('T');
  200.       this.osg.drawString("T", 2 * this.colWidth + this.colWidth / 2 - var30 / 2, this.rowHeight + this.rowHeight / 2 + var37 / 2);
  201.       var30 = var28.charWidth('W');
  202.       this.osg.drawString("W", 3 * this.colWidth + this.colWidth / 2 - var30 / 2, this.rowHeight + this.rowHeight / 2 + var37 / 2);
  203.       var30 = var28.charWidth('T');
  204.       this.osg.drawString("T", 4 * this.colWidth + this.colWidth / 2 - var30 / 2, this.rowHeight + this.rowHeight / 2 + var37 / 2);
  205.       var30 = var28.charWidth('F');
  206.       this.osg.drawString("F", 5 * this.colWidth + this.colWidth / 2 - var30 / 2, this.rowHeight + this.rowHeight / 2 + var37 / 2);
  207.       var30 = var28.charWidth('S');
  208.       this.osg.drawString("S", 6 * this.colWidth + this.colWidth / 2 - var30 / 2, this.rowHeight + this.rowHeight / 2 + var37 / 2);
  209.       Date var12 = new Date(this.year - 1900, this.month, 1);
  210.       int var13 = var12.getDay();
  211.       int var14 = var13;
  212.       int var15 = this.daysInMonth[this.month];
  213.       if (this.month == 1) {
  214.          Date var16 = new Date(this.year - 1900, this.month + 1, 1);
  215.          int var17 = var16.getDay();
  216.          Date var18 = new Date(this.year - 1900, this.month, 28);
  217.          int var19 = var18.getDay();
  218.          if (var17 > 0 && var17 - 1 != var19) {
  219.             ++var15;
  220.          }
  221.  
  222.          if (var17 == 0 && var19 != 6) {
  223.             ++var15;
  224.          }
  225.       }
  226.  
  227.       for(int var38 = var13; var38 < var14 + var15; ++var38) {
  228.          int var39 = var38 / 7;
  229.          int var40 = var38 % 7;
  230.          int var41 = var38 - var13 + 1;
  231.          String var20 = "" + var41;
  232.          int var21 = var28.stringWidth(var20);
  233.          this.osg.drawString(var20, var40 * this.colWidth + this.colWidth / 2 - var21 / 2, (var39 + 2) * this.rowHeight + this.rowHeight / 2 + var37 / 2);
  234.       }
  235.  
  236.       var1.drawImage(this.osImage, 0, 0, (ImageObserver)null);
  237.    }
  238.  
  239.    public synchronized void reshape(int var1, int var2, int var3, int var4) {
  240.       this.rowHeight = var4 / 8;
  241.       this.colWidth = var3 / 7;
  242.       this.osImage = null;
  243.       this.osg = null;
  244.       super.reshape(var1, var2, var3, var4);
  245.       ((Component)this).repaint();
  246.    }
  247.  
  248.    public Dimension minimumSize() {
  249.       return new Dimension(100, 100);
  250.    }
  251.  
  252.    public Dimension preferredSize() {
  253.       return new Dimension(100, 100);
  254.    }
  255.  
  256.    public boolean mouseDown(Event var1, int var2, int var3) {
  257.       Rectangle var4 = new Rectangle(0, 0, this.colWidth, this.rowHeight);
  258.       Rectangle var5 = new Rectangle(((Component)this).size().width - this.colWidth, 0, this.colWidth, this.rowHeight);
  259.       if (var4.inside(var2, var3)) {
  260.          this.DoPrevMonth();
  261.          return true;
  262.       } else if (var5.inside(var2, var3)) {
  263.          this.DoNextMonth();
  264.          return true;
  265.       } else {
  266.          return false;
  267.       }
  268.    }
  269.  
  270.    public boolean mouseUp(Event var1, int var2, int var3) {
  271.       return false;
  272.    }
  273.  
  274.    public boolean mouseMove(Event var1, int var2, int var3) {
  275.       Rectangle var4 = new Rectangle(0, 0, this.colWidth, this.rowHeight);
  276.       Rectangle var5 = new Rectangle(((Component)this).size().width - this.colWidth, 0, this.colWidth, this.rowHeight);
  277.       if (var4.inside(var2, var3)) {
  278.          if (!this.prevButtonHighlited) {
  279.             this.prevButtonHighlited = true;
  280.             this.nextButtonHighlited = false;
  281.             ((Component)this).repaint();
  282.             return true;
  283.          } else {
  284.             return false;
  285.          }
  286.       } else if (var5.inside(var2, var3)) {
  287.          if (!this.nextButtonHighlited) {
  288.             this.nextButtonHighlited = true;
  289.             this.prevButtonHighlited = false;
  290.             ((Component)this).repaint();
  291.             return true;
  292.          } else {
  293.             return false;
  294.          }
  295.       } else {
  296.          if (this.prevButtonHighlited || this.nextButtonHighlited) {
  297.             this.prevButtonHighlited = false;
  298.             this.nextButtonHighlited = false;
  299.             ((Component)this).repaint();
  300.          }
  301.  
  302.          return false;
  303.       }
  304.    }
  305. }
  306.